package com.example.javalib.skill;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

public class parse {
    public static void main(String[] args) {
        readXml();
    }

    /**
     * 解析check_test.xml文件
     * @return
     */
    public static boolean readXml() {
        try {
            // 创建解析器工厂
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = factory.newDocumentBuilder();
            // 创建一个Document对象
            Document doc = db.parse("javaLib/src/main/java/com/example/javalib/res/check_test.xml");
            NodeList boolList = doc.getDocumentElement().getElementsByTagName("bool");
            // 获取节点个数
            System.out.println("一共有" + boolList.getLength() + "本书");

            // 遍历每个book节点
            for (int i = 0; i < boolList.getLength(); i++) {
                System.out.println("*******************************");
                // 索引从零开始
                org.w3c.dom.Node bool = boolList.item(i);
                // 获取book节点所有属性集合
                org.w3c.dom.NamedNodeMap attrs = bool.getAttributes();

//                System.out.println("第" + (i + 1) + "bool共有" + attrs.getLength() + "属性");
                // 遍历book属性，不知道节点属性和属性名情况
                for (int j = 0; j < attrs.getLength(); j++) {
                    // 获取某一个属性
                     Node attr = attrs.item(j);
                    System.out.print("属性名:" + attr.getNodeName());
                    System.out.println(" --- 属性值:" + attr.getNodeValue());
                    if ("test".equals(attr.getNodeValue())) {
                        if ("true".equals(bool.getFirstChild().getNodeValue())) {
                            return true;
                        }
                        break;
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
}
